package view;

import javax.swing.JPanel;
import javax.swing.JLabel;
import java.awt.Font;
import java.util.ArrayList;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JOptionPane;
import javax.swing.JTextField;

import controlador.Tragamonedas;


import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;


public class PanelBajaPremio extends JPanel implements ActionListener,FocusListener {

	
	private static final long serialVersionUID = 1L;
	private JTextField textField;
	private JLabel lblBajaPremio;
	private JLabel lblPremios;
	private JLabel lblCasillasAgregadas;
	private JLabel lblMontoPremio;
	private JComboBox<String> comboBox_Premios;
	private JComboBox<String> comboBox_CasillasAgregadas;
	private JButton btnBajaPremio;
	private Tragamonedas sys;


	public PanelBajaPremio(final Tragamonedas sys) {
		setLayout(null);
		this.sys = sys;

		lblBajaPremio = new JLabel("Baja Premio");
		lblBajaPremio.setFont(new Font("Tahoma", Font.BOLD, 13));
		lblBajaPremio.setBounds(86, 11, 106, 14);
		add(lblBajaPremio);


		lblPremios = new JLabel("Premios:");
		lblPremios.setBounds(22, 70, 130, 14);
		add(lblPremios);

		lblCasillasAgregadas = new JLabel("Casillas Agregadas:");
		lblCasillasAgregadas.setBounds(22, 105, 130, 14);
		add(lblCasillasAgregadas);

		lblMontoPremio = new JLabel("Monto Premio:");
		lblMontoPremio.setBounds(22, 142, 130, 14);
		add(lblMontoPremio);



		comboBox_Premios = new JComboBox<String>();
		comboBox_Premios.addFocusListener(this);
		comboBox_Premios.addActionListener(this);
		comboBox_Premios.setBounds(180, 66, 121, 22);
		add(comboBox_Premios);

		for (String idPremio : this.sys.listarPremios())
			comboBox_Premios.addItem(idPremio);
		
		if (comboBox_Premios.getItemCount() <= 0) {
			comboBox_Premios.setFocusable(false);
			comboBox_Premios.setEnabled(false);
		}

		comboBox_CasillasAgregadas = new JComboBox<String>();
		comboBox_CasillasAgregadas.addFocusListener(this);
		comboBox_CasillasAgregadas.setBounds(180, 101, 121, 22);
		add(comboBox_CasillasAgregadas);

		if (comboBox_Premios.getItemCount() > 0) {
			String idPremio = (String)comboBox_Premios.getSelectedItem();
			ArrayList<String> tempCasillas = this.sys.getCasillasPremio(idPremio);

			for (String tempCasilla : tempCasillas) {
				comboBox_CasillasAgregadas.addItem(tempCasilla);
			}

		}else{
			comboBox_CasillasAgregadas.setFocusable(false);
			comboBox_CasillasAgregadas.setEnabled(false);
		}

		btnBajaPremio = new JButton("Baja Premio");
		btnBajaPremio.addActionListener(this);
		

		if (comboBox_Premios.getItemCount() <= 0)
			btnBajaPremio.setEnabled(false);

		btnBajaPremio.setBounds(22, 167, 106, 23);
		add(btnBajaPremio);

		textField = new JTextField();
		textField.setText("0");
		textField.setEditable(false);
		textField.setEnabled(false);
		textField.setBounds(180, 139, 121, 20);
		add(textField);
		textField.setColumns(10);

		if (comboBox_Premios.getItemCount() > 0) {
			String idPremio = (String)comboBox_Premios.getSelectedItem(); 
			textField.setText(String.valueOf((sys.obtenerMontoPremio(idPremio))));
		}

	}


	@Override
	public void actionPerformed(ActionEvent event) {
		if(event.getSource() == btnBajaPremio){
			if(comboBox_Premios.getItemCount() > 0)
				sys.cancelarPremio((String)comboBox_Premios.getSelectedItem());
			
			comboBox_Premios.removeAllItems();
			comboBox_CasillasAgregadas.removeAllItems();
			
			for (String idPremio : this.sys.listarPremios())
				comboBox_Premios.addItem(idPremio);
	
			if (comboBox_Premios.getItemCount() > 0) {
				String idPremio = (String)comboBox_Premios.getSelectedItem();
				ArrayList<String> tempCasillas = this.sys.getCasillasPremio(idPremio);

				for (String tempCasilla : tempCasillas) {
					comboBox_CasillasAgregadas.addItem(tempCasilla);
				}
			}
			
			if (comboBox_Premios.getItemCount() <= 0) {
				textField.setText("0");
				btnBajaPremio.setEnabled(false);
				comboBox_Premios.setFocusable(false);
				comboBox_Premios.setEnabled(false);
				comboBox_CasillasAgregadas.setFocusable(false);
				comboBox_CasillasAgregadas.setEnabled(false);
				}
			
			JOptionPane.showMessageDialog(null,
					"Se ha eliminado el premio", "Informacion",
					JOptionPane.OK_OPTION);
				
			
		}

}
		
		

	
	@Override
	public void focusGained(FocusEvent event) {
		if (event.getSource() == comboBox_CasillasAgregadas || event.getSource() == comboBox_Premios){
			comboBox_CasillasAgregadas.removeAllItems();
			if (comboBox_Premios.getComponentCount() > 0) {
				String idPremio = (String)comboBox_Premios.getSelectedItem();
				ArrayList<String> tempCasillas = this.sys.getCasillasPremio(idPremio);

				for (String tempCasilla : tempCasillas) {
					comboBox_CasillasAgregadas.addItem(tempCasilla);
				}
				
				textField.setText(String.valueOf((sys.obtenerMontoPremio(idPremio))));
			}
		}
		
	}


	@Override
	public void focusLost(FocusEvent event) {
		if (event.getSource() == comboBox_CasillasAgregadas || event.getSource() == comboBox_Premios){
			comboBox_CasillasAgregadas.removeAllItems();
			if (comboBox_Premios.getComponentCount() > 0) {
				
				String idPremio = (String)comboBox_Premios.getSelectedItem();
				
				ArrayList<String> tempCasillas = this.sys.getCasillasPremio(idPremio);

				for (String tempCasilla : tempCasillas) {
					comboBox_CasillasAgregadas.addItem(tempCasilla);
				}
				
				textField.setText(String.valueOf((sys.obtenerMontoPremio(idPremio))));
			}
		}
		
	}






}
